Source for file SC_MobileUserAgent.php

Documentation is available at SC_MobileUserAgent.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23. require_once(dirname(__FILE__'/../module/Net/UserAgent/Mobile.php');
  24.  
  25. /**
  26.  * 携帯端末の情報を扱うクラス
  27.  *
  28.  * 対象とする携帯端末は $_SERVER から決定する。
  29.  * すべてのメソッドはクラスメソッド。
  30.  */
  31.     /**
  32.      * 携帯端末のキャリアを表す文字列を取得する。
  33.      *
  34.      * 文字列は docomo, ezweb, softbank のいずれか。
  35.      *
  36.      * @return string|false携帯端末のキャリアを表す文字列を返す。
  37.      *                       携帯端末ではない場合は false を返す。
  38.      */
  39.     function getCarrier({
  40.         $objAgent =Net_UserAgent_Mobile::singleton();
  41.         if (Net_UserAgent_Mobile::isError($objAgent)) {
  42.             return false;
  43.         }
  44.  
  45.         switch ($objAgent->getCarrierShortName()) {
  46.         case 'I':
  47.             return 'docomo';
  48.         case 'E':
  49.             return 'ezweb';
  50.         case 'V':
  51.             return 'softbank';
  52.         case 'S':
  53.             return 'softbank';
  54.         default:
  55.             return false;
  56.         }
  57.     }
  58.  
  59.     /**
  60.      * 勝手サイトで利用可能な携帯端末/利用者のIDを取得する。
  61.      *
  62.      * 各キャリアで使用するIDの種類:
  63.      * + docomo   ... UTN
  64.      * + ezweb    ... EZ番号
  65.      * + softbank ... 端末シリアル番号
  66.      *
  67.      * @return string|false取得したIDを返す。取得できなかった場合は false を返す。
  68.      */
  69.     function getId({
  70.         $objAgent =Net_UserAgent_Mobile::singleton();
  71.         if (Net_UserAgent_Mobile::isError($objAgent)) {
  72.             return false;
  73.         elseif ($objAgent->isDoCoMo(|| $objAgent->isVodafone()) {
  74.             $id $objAgent->getSerialNumber();
  75.         elseif ($objAgent->isEZweb()) {
  76.             $id @$_SERVER['HTTP_X_UP_SUBNO'];
  77.         }
  78.         return isset($id$id false;
  79.     }
  80.  
  81.     /**
  82.      * 携帯端末の機種を表す文字列を取得する。
  83.      * 携帯端末ではない場合はユーザーエージェントの名前を取得する。(例: "Mozilla")
  84.      *
  85.      * @return string 携帯端末のモデルを表す文字列を返す。
  86.      */
  87.     function getModel({
  88.         $objAgent =Net_UserAgent_Mobile::singleton();
  89.         if (Net_UserAgent_Mobile::isError($objAgent)) {
  90.             return 'Unknown';
  91.         elseif ($objAgent->isNonMobile()) {
  92.             return $objAgent->getName();
  93.         else {
  94.             return $objAgent->getModel();
  95.         }
  96.     }
  97.  
  98.     /**
  99.      * EC-CUBE がサポートする携帯キャリアかどうかを判別する。
  100.      *
  101.      * @return boolean サポートしている場合は true、それ以外の場合は false を返す。
  102.      */
  103.     function isMobile({
  104.         $objAgent =Net_UserAgent_Mobile::singleton();
  105.         if (Net_UserAgent_Mobile::isError($objAgent)) {
  106.             return false;
  107.         else {
  108.             return $objAgent->isDoCoMo(|| $objAgent->isEZweb(|| $objAgent->isVodafone();
  109.         }
  110.     }
  111.  
  112.     /**
  113.      * EC-CUBE がサポートする携帯キャリアかどうかを判別する。
  114.      *
  115.      * @return boolean 携帯端末ではない場合は true、それ以外の場合は false を返す。
  116.      */
  117.     function isNonMobile({
  118.         return !SC_MobileUserAgent::isMobile();
  119.     }
  120.  
  121.     /**
  122.      * EC-CUBE がサポートする携帯端末かどうかを判別する。
  123.      *
  124.      * @return boolean サポートしている場合は true、それ以外の場合は false を返す。
  125.      */
  126.     function isSupported({
  127.         $objAgent =Net_UserAgent_Mobile::singleton();
  128.  
  129.         // 携帯端末だと認識されたが、User-Agent の形式が未知の場合
  130.         if (Net_UserAgent_Mobile::isError($objAgent)) {
  131.             GC_Utils_Ex::gfPrintLog($objAgent->toString());
  132.             return false;
  133.         }
  134.  
  135.         if ($objAgent->isDoCoMo()) {
  136.             $arrUnsupportedSeries array('501i''502i''209i''210i');
  137.             $arrUnsupportedModels array('SH821i''N821i''P821i ''P651ps''R691i''F671i''SH251i''SH251iS');
  138.             return !in_array($objAgent->getSeries()$arrUnsupportedSeries&& !in_array($objAgent->getModel()$arrUnsupportedModels);
  139.         elseif ($objAgent->isEZweb()) {
  140.             return $objAgent->isWAP2();
  141.         elseif ($objAgent->isVodafone()) {
  142.             return $objAgent->isPacketCompliant();
  143.         else {
  144.             // 携帯端末ではない場合はサポートしていることにする。
  145.             return true;
  146.         }
  147.     }
  148. }
  149. ?>

Documentation generated on Tue, 28 Apr 2009 18:13:35 +0900 by phpDocumentor 1.4.2